#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
	ElemType elem[MaxSize];
   	int length;
} SqList;



/*****顺序表的基本操作*****/
int ListEmpty(SqList *L)
{
	return(L->length==0);
}

void InitList(SqList *&L)
{
	L=(SqList *)malloc(sizeof(SqList));
	L->length=0;
}

int ListInsert(SqList *&L,int i,ElemType e)
{
	int j;
	if (i<1 || i>L->length+1)
		return 0;
	i--;							/*将顺序表位序转化为elem下标*/
	for (j=L->length;j>i;j--)		/*将elem[i]及后面元素后移一个位置*/
		L->elem[j]=L->elem[j-1];
	L->elem[i]=e;
	L->length++;					/*顺序表长度增1*/
	return 1;
}
void DispList(SqList *L)
{
	int i;
	if (ListEmpty(L)) return;
	for (i=0;i<L->length;i++)
		printf("%d ",L->elem[i]);
	printf("\n");
}
void Reverse(SqList *&L)
   {
       int temp = 0;
       for(int i = 0; i< L->length;i++){
           temp = L->elem[i];
           L->elem[i] = L->elem[L->length-1-i];
           L->elem[L->length-1-i] = temp;
           if(L->length-i-1 - i <= 1)
                break;
       }

	}



int main()               //main() function
{	// 调用对应的函数，完成顺序表的建立，然后进行逆置
    /********** Begin **********/
    SqList *L;
    printf("(1)初始化顺序表L\n");
    InitList(L);
    printf("(2)输入顺序表的长度M:\n");
    int M = 0;
    scanf("%d",&M);
    printf("(3)依次插入M个元素\n");
    printf("(4)输逆置前顺序表:\n");
    int a[10];
    for (int i = 0;i < M;i++)
        {
            scanf("%d",&a[i]);
            ListInsert(L,i+1,a[i]);
            printf("%d ",a[i]);
        }



    Reverse(L);
    printf("\n");
    printf("(5)逆置后顺序表:\n");
    DispList(L);
    





	/********** End **********/


}
